package log

import (
	"errors"

	"github.com/sirupsen/logrus"
)

type Config struct {
	// 是否debug模式
	Debug bool `json:"debug"`
	// 日志级别 "panic", "fatal", "error", "warning", "info", "debug", "trace",
	Level string `json:"level"`
	// 保存路径
	SavePath string `json:"savePath"`
	// 日志后缀
	//%Y:年,%m:月,%d:日,%H:时,%M:分,%s:秒
	Suffix string `json:"suffix"`
	//设置文件清理前的最长保存时间 单位秒(s) 默认保存 30天
	MaxAge int64 `json:"maxAge"`
	//设置日志分割的时间，隔多久分割一次 单位秒(s) 默认保存 24小时
	RotationTime int64 `json:"rotationTime"`
	// 时间格式化，默认格式化毫秒 2006-01-02 15:04:05.000000
	TimeFormat string `json:"timeFormat"`
}

func (c *Config) Validate() error {
	if c.SavePath == "" {
		return errors.New("save is empty")
	}

	if c.Suffix == "" {
		c.Suffix = "%Y%m%d%H%M"
	}

	if c.MaxAge == 0 {
		c.MaxAge = 30 * 24 * 60 * 60
	}

	if c.RotationTime == 0 {
		c.RotationTime = 24 * 60 * 60
	}
	if c.TimeFormat == "" {
		c.TimeFormat = "2006-01-02 15:04:05.000000"
	}

	if c.Level == "" {
		c.Level = "info"
	}

	if _, err := logrus.ParseLevel(c.Level); err != nil {
		return errors.New("log level error")
	}

	return nil
}
